/*************************************************
  * 描述：当前电脑相关配置
  *
  * File：localmachine.h
  * Author：chenyujin@mozihealthcare.cn
  * Date：2025/9/10
  * Update：
  * ************************************************/
#ifndef COREXI_COMMON_PC_LOCALMACHINE_H
#define COREXI_COMMON_PC_LOCALMACHINE_H

#include <common/export.h>
#include <string>

class CXI_COMMON_EXPORT LocalMachine
{
public:
	/**
	 * 获取当前电脑的MAC地址
	 * @param needFormat 是否需要格式化，是："00:1A:2B:3C:4D:5E"，否："001A2B3C4D5E"
	 * @return
	 */
	static std::string getMac(bool needFormat = true);

	/**
	 * 获取当前电脑的主机名
	 *
	 * @return
	 */
	static std::string getHostName();

	/**
	 * 获取当前电脑的首个IP地址
	 *
	 * @return
	 */
	static std::string getIpAddress();

	/**
	 * 获取当前电脑的所有IP地址
	 * 通过逗号分隔
	 * @return
	 */
	static std::string getAllIpAddress();

	/**
	 * 获取当前电脑的所有MAC地址
	 * 通过逗号分隔
	 * @param needFormat 是否需要格式化，是："00:1A:2B:3C:4D:5E"，否："001A2B3C4D5E"
	 * @return
	 */
	static std::string getMacAddressesAsString(bool needFormat = true);

	/**
	 * 格式化MAC地址
	 * 将 MAC 地址字节数组转换为 16 进制字符串的格式化模式，例如 00:1A:2B:3C:4D:5E
	 * @param macAddress
	 * @return
	 */
	static std::string formatMacAddress(const std::string& macAddress);

	/**
	 * 正规化MAC地址
	 * 将 MAC 地址字节数组转换为 16 进制字符串的标准化模式，例如 001A2B3C4D5E
	 * @param macAddress
	 * @return
	 */
	static std::string normalizeMacAddress(const std::string& macAddress);

	/**
	 * 获取本机第一个CPU的ID
	 * @return
	 */
	static std::string getCPUId();

	/**
	 * 获取本机主板的ID
	 * @return
	 */
	static std::string getMainBoardId();
};

#endif//COREXI_COMMON_PC_LOCALMACHINE_H
